Adaptive multipath fabric for balanced performance and high availability

ABSTRACT

A computing system providing high-availability access to computing resources includes: a plurality of interfaces; a plurality of sets of computing resources, each of the sets of computing resources including a plurality of computing resources; and at least three switches, each of the switches being connected to a corresponding one of the interfaces via a host link and being connected to a corresponding one of the sets of computing resources via a plurality of resource connections, each of the switches being configured such that data traffic is distributed to remaining ones of the switches through a plurality of cross-connections between the switches if one of the switches fails.

CROSS-REFERENCE TO RELATED APPLICATION(S)

This application claims priority to and the benefit of U.S. ProvisionalPatent Application No. 62/377,487 “Adaptive Multipath Fabric forBalanced Performance and High Availability,” filed in the United StatesPatent and Trademark Office on Aug. 19, 2016, the entire disclosure ofwhich is incorporated by reference herein.

FIELD

Aspects of embodiments of the present invention relate to the field ofproviding redundancy to computer systems.

BACKGROUND

In the field of computer systems, reliable and high performance accessto data and other computing resources is important for the continuedoperations of businesses and daily lives. The term “high availability”(HA) is frequently used to describe systems that reduce or eliminatesingle points of failure (e.g., providing redundancy to the system sothat the failure of a single component does not result in the failure ofthe entire system).

Example computer systems that benefit from high availability includedata storage systems such as storage area network (SAN) systems, whichmay provide data resources for the storage and retrieval of data over acomputer network such as a local area network (LAN) or over theinternet.

SUMMARY

Aspects of embodiments of the present invention relate to providingbalanced performance and high availability to computing resourcesthrough the use of an adaptive multipath fabric.

According to one embodiment of the present invention, a computing systemproviding high-availability access to computing resources includes: aplurality of interfaces; a plurality of sets of computing resources,each of the sets of computing resources including a plurality ofcomputing resources; and at least three switches, each of the switchesbeing connected to a corresponding one of the interfaces via a host linkand being connected to a corresponding one of the sets of computingresources via a plurality of resource connections, each of the switchesbeing configured such that data traffic is distributed to remaining onesof the switches through a plurality of cross-connections between theswitches if one of the switches fails.

The at least three switches may include: a first switch; a secondswitch; and a third switch directly connected to the first switch via afirst cross-connection and directly connected to the second switch via asecond cross-connection.

The computing system may further include: a first server node coupled tothe first switch via a first host link, the first server node includinga first interface of the plurality of interfaces; and a second servernode coupled to the second switch via a second host link, the secondserver node including a second interface of the plurality of interfaces.

The computing system may further include a third server node coupled tothe third switch via a third host link.

The computing system may further include: a first secondary switchdirectly connected to the first server node; a second secondary switchdirectly connected to the second server node; a third secondary switchdirectly connected to the third server node; a first cross-connectiondirectly connecting the first secondary switch to the second secondaryswitch; a second cross-connection directly connecting the firstsecondary switch to the third secondary switch; and a thirdcross-connection directly connecting the second secondary switch to thethird secondary switch.

A first set of computing resources of the plurality of sets of computingresources may include a first set of data storage devices, each of thefirst set of data storage devices having a first port directly connectedto the first switch via a first resource connection of the plurality ofresource connections and a second port directly connected to the secondswitch via a second resource connection of the plurality of resourceconnections, and a second set of computing resources of the plurality ofsets of computing resources may include a second set of data storagedevices, each of the second set of data storage devices having a firstport directly connected to the first switch via a third resourceconnection of the plurality of resource connections and a second portdirectly connected to the second switch via a fourth resource connectionof the plurality of resource connections.

The computing system may further include a fourth switch directlyconnected to the first switch via a third cross-connection and directlyconnected to the second switch via a fourth cross-connection.

The computing system may further include a third set of data storagedevices, each of the third set of data storage devices having a firstport directly connected to the third switch via a fifth resourceconnection and a second port directly connected to the fourth switch viaa sixth resource connection.

The computing system may further include a fourth server node directlyconnected to the fourth switch via a fourth host link.

The computing system may further include a fourth set of data storagedevices, each of the fourth set of data storage devices having a firstport directly connected to the third switch via a seventh resourceconnection and a second port directly connected to the fourth switch viaan eighth resource connection.

Each switch may be configured to: detect a failure of another switch;and provide access to the first set of data storage devices and thesecond set of data storage devices via the host link and thecross-connection corresponding to the switch.

The computing system may include N interfaces, where N is an integer,wherein a bandwidth unit B may be an amount of bandwidth required forone of the computing resources of the sets of computing resources tooperate at full bandwidth, where B may be a positive number, whereineach resource connection may have a bandwidth of at least 1×B, whereineach set of computing resources may have up to K computing resources,where K is an integer, wherein each host link of each of the pluralityof interfaces may support a normal traffic bandwidth of K×B and amaximum traffic bandwidth greater than or equal to K×B, and wherein eachcross-connection of the plurality of cross-connections may have abandwidth of at least K×B/(N−1).

The switches may be Peripheral Component Interconnect Express (PCIe)switches, and wherein the host links and the resource connections may bePCIe bus links.

According to one embodiment of the present invention, a computing systemincludes at least two high-availability pairs, each high availabilitypair including: a first switch; a second switch; a first interfacecoupled to the first switch via a first host link; a interface coupledto the second switch via a second host link; a first set of computingresources connected to the first switch via a first resource connectionand connected to the second switch via a second resource connection; asecond set of computing resources connected to the first switch via athird resource connection and connected to the second switch via afourth resource connection; a plurality of first cross-connections, eachof the first cross-connections directly connecting the first switch toeach switch of each of the other high-availability pairs; and aplurality of second cross-connections, each of the secondcross-connections directly connecting the second switch to each switchof each of the other high-availability pairs.

The first set of computing resources may include a first set of datastorage devices, each of the first set of data storage devices having afirst port directly connected to the first switch via a first resourceconnection and a second port directly connected to the second switch viaa second resource connection, and wherein the second set of computingresources may include a second set of data storage devices, each of thesecond set of data storage devices having a first port directlyconnected to the first switch via a third resource connection and asecond port directly connected to the second switch via a fourthresource connection.

The first switch may be configured to: detect a failure of the secondswitch; and provide access to the first set of data storage devices andthe second set of data storage devices via the first host link and thefirst cross-connection.

The computing system may include N server nodes, where N is an integer,wherein a bandwidth unit B may be an amount of bandwidth required forone of the computing resources to operate at full bandwidth, where B maybe a positive number, wherein each resource connection may have abandwidth of at least 1×B; wherein each set of computing resources mayhave up to K computing resources, where K is an integer, wherein eachserver node may support a normal bandwidth of K×B and may support amaximum bandwidth greater than or equal to K×B, and wherein eachcross-connection may have a bandwidth of at least K×B/(N−1).

The switches may be Peripheral Component Interconnect Express (PCIe)switches, and wherein the host links and the resource connections may bePCIe bus links.

The at least two high-availability pairs may include: a firsthigh-availability pair; a second high-availability pair; a thirdhigh-availability pair; and a fourth high-availability pair.

According to one embodiment of the present invention, a redundantresource connection fabric includes: a first switch; a second switch; athird switch directly connected to the first switch via a firstcross-connection and directly connected to the second switch via asecond cross-connection; a first set of computing resources, each of thefirst set of computing resources having a first port directly connectedto the first switch via a first resource connection and a second portdirectly connected to the second switch via a second resourceconnection; and a second set of computing resources, each of the secondset of computing resources having a first port directly connected to thefirst switch via a third resource connection and a second port directlyconnected to the second switch via a fourth resource connection.

The first switch may be configured to: detect a failure of the secondswitch; and provide access to the first set of computing resources andthe second set of computing resources via the first cross-connection.

The redundant resource connection fabric may further include a fourthswitch directly connected to the first switch via a thirdcross-connection and directly connected to the second switch via afourth cross-connection.

The redundant resource connection fabric may further include a third setof computing resources directly connected to the third switch via afirst resource connection and directly connected to the fourth switchvia a second resource connection.

The redundant resource connection fabric may further include a fourthset of computing resources directly connected to the third switch via athird resource connection and directly connected to the fourth switchvia a fourth resource connection.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, together with the specification, illustrateexemplary embodiments of the present invention, and, together with thedescription, serve to explain the principles of the present invention.

FIG. 1A is a block diagram illustrating a data storage system includingan adaptive multipath fabric according to one embodiment of the presentinvention.

FIG. 1B is a block diagram illustrating a data storage system includingan adaptive multipath fabric according to one embodiment of the presentinvention.

FIG. 2A is a block diagram illustrating the failure of a switch and therebalancing of data transfers according to one embodiment of the presentinvention.

FIG. 2B is a block diagram illustrating the failure of a server node andthe rebalancing of data transfers according to one embodiment of thepresent invention.

FIG. 3 is a block diagram of a system which further includes a secondaryfabric connecting the server nodes according to one embodiment of thepresent invention.

FIG. 4A is a block diagram illustrating a small high availabilityconfiguration including two server nodes and one set of data storagedevices according to one embodiment of the present invention.

FIG. 4B illustrates the expansion of the configuration shown in FIG. 4Ato include additional sets of data storage devices according to oneembodiment of the present invention.

FIG. 4C illustrates the expansion of the configuration shown in FIG. 4Ato include additional server nodes according to one embodiment of thepresent invention.

FIG. 5 is a block diagram illustrating a system having eight servernodes connected to forty eight data storage devices via eight switchesfor a total throughput of 192 GB/s (based on the above assumptionsregarding each data storage device having about 4 GB/s throughput)according to one embodiment of the present invention.

DETAILED DESCRIPTION

In the following detailed description, only certain exemplaryembodiments of the present invention are shown and described, by way ofillustration. As those skilled in the art would recognize, the inventionmay be embodied in many different forms and should not be construed asbeing limited to the embodiments set forth herein. Like referencenumerals designate like elements throughout the specification.

Aspects of embodiments of the present invention are generally directedto systems and methods for providing high availability access tocomputing resources through a set of interfaces, where an adaptivefabric interposed between the interfaces and the computing resourcesmaintains access to the computing resources in the event of failure and,in some embodiments, maintains full performance access to thoseresources in the event of failure.

For example, a data storage computing system providing high-availabilityaccess to computing resources including: a plurality of interfaces; aplurality of sets of computing resources, each of the sets of computingresources including a plurality of computing resources; and at leastthree switches, each of the switches being connected to a correspondingone of the interfaces via a host link and being connected to acorresponding one of the sets of computing resources via a resourceconnection, each of the switches being configured such that data trafficis distributed to remaining ones of the switches through a plurality ofcross-connections between the switches if one of the switches fails.

More concretely, a data storage system such as a storage area network(SAN) system may include data storage devices connected to one or moreserver nodes. The data storage devices may be, for example, solid statedrives (SSDs) or hard disk drives (HDDs) that are connected to theserver nodes over a bus such as peripheral component interconnectexpress (PCIe) bus. Each server node may include, for example, a centralprocessing unit, memory, and network interface to provide remote accessto the data stored on the data storage devices, where the data storagedevices are mapped to the server nodes. However, a network storagesystem that uses only a single server node may not provide “highavailability” (HA) because access to the data stored in the data storagedevices will be lost if the single server node fails (e.g., if thenetwork interface, the bus, or the CPU breaks down).

As such, some aspects of embodiments of the present invention aredirected to an adaptive fabric that provides high availability access tothe computing resources. In one embodiment, each of the computingresource is connected to multiple switches, and each of the switches isconnected to at least one other switch via a cross-connection of theadaptive fabric. Each of the switches is connected to an interface(e.g., network interfaces) for communicating with users of the computingresources. In the event of a failure of an interface or the failure of aswitch, the adaptive fabric reroutes data through the cross-connectionsto the other interfaces.

In one embodiment, the interfaces may be components of a host servernode, where the server node is a computer system including a processor(CPU) and memory. The server nodes may provide the users with access toservices associated with the computing resources by way of applicationsthat are stored in the memory of the server node and that are run orexecuted by the processors of the server nodes. For example, thecomputing resources may be sets of data storage devices, in which casethe applications may be network file servers, web servers, databaseservers, and the like. As another example, the computing resources maybe dynamic memory for providing low latency caches. As still anotherexample, the computing resources may be graphical processing units(GPUs), in which case the applications may be, for example, 3D renderingengines, machine learning training platforms (e.g., for training neuralnetworks), cryptocurrency miners (e.g., bitcoin), and the like.

Some aspects of embodiments of the present invention relate to providingsufficient bandwidth to computing resources, such as data storagedevices. When too many data storage devices are connected to the servernodes, there may not be enough bandwidth available between the servernodes and the data storage devices to allow the data storage devices tooperate at full performance. More concretely, in a single server nodesystem, if eight SSDs are connected to the PCIe switch, where each SSDis capable of saturating a 4 lane link (×4) connection to the PCIeswitch, and if the server node has a 32 lane link (×32) to the PCIeswitch, then the eight SSDs, alone, are sufficient to saturate theconnection to the server node. If any additional data storage deviceswere added to the system there would not be sufficient bandwidth tooperate all of the data storage devices at full performance because theconnection between the server node and the PCIe switch is a bottleneckin the system. In some circumstances, the connection between the servernode and the network adapter may similarly be a bottleneck in thesystem.

Some data storage devices have two connection ports to provideredundancy. For example, a data storage device having dual PCIe portscan have a first port connected to a first server node and a second portconnected to a second server node. In this arrangement, if one of theserver nodes fails the data storage device is still accessible throughthe other server node.

However, in such an arrangement, the failure of a server nodeexacerbates bandwidth limitations. Continuing the above example, whilethe two server nodes together may provide sufficient bandwidth for theconnected data storage devices, if one of the server nodes fails, thenall traffic to and from the data storage devices is handled by thesurviving server node, which may not have sufficient bandwidth to handlethe additional traffic. In particular, if the bandwidth requirements ofthe data storage devices already saturate both links to the servernodes, then failure of one of the server nodes results in approximately50% performance degradation.

Therefore, some embodiments of the present invention are directed tosystems and methods that provide access to data storage devices via aplurality of server nodes, where the systems and methods are able tomaintain the full performance potential of the data storage devices(without performance degradation) in the event of a failure of a servernode. In more detail, aspects of embodiment of the present inventionrelate to an adaptive multipath fabric of connections to connectcomputing resources (such as multi-port data storage devices) withserver nodes via a plurality of switches, where the multipath fabricprovides alternate paths for data traffic in the event of a failure inthe system. Aspects of embodiments of the present invention can beapplied to a variety of numbers of server nodes and sets of computingresources (e.g., data storage devices) in order to achieve particulardesired system performance profiles. Aspects of embodiments of thepresent invention also allow scaling of both computing resources (e.g.,data storage capacity) and general computation capacity (by adding moredata storage devices or more server nodes, respectively) from an initialconfiguration to a full configuration while maintaining the specifiedperformance profile in case of a node failure.

For the sake of convenience, embodiments of the present invention willbe described below with respect to solid state drives havingnon-volatile memory express (NVMe) interfaces connected to host servernodes via PCIe switches and a PCIe fabric. However, embodiments of thepresent invention are not limited thereto and the underlyingarchitecture of the fabric can be applied to other interfaces such asEthernet, Infiniband® (IB), Fibre Channel (FC), small computer systeminterface (SCSI), serially attached SCSI (SAS), and the like. Inaddition, embodiments of the present invention can also be applied toproviding high availability to other types of resources, such as harddisk drives, tape drives, volatile memory such as dynamic random accessmemory (DRAM), and computing units such as vector processors, graphicalprocessing units (GPUs), digital signal processors (DSPs), and fieldprogrammable gate arrays (FPGAs).

Multipath Fabric Structure

Aspects of embodiments of the present invention will be described belowin the particular case of a data storage system in which the computingresources are sets of dual-port data storage devices, the connectionsand switches are PCIe connections and switches, and the interfaces arenetwork interfaces. However, embodiments of the present invention arenot limited thereto and can be applied to other types of computingresources, interconnection protocols, and interfaces.

FIG. 1A is a block diagram illustrating a data storage system 10including an adaptive multipath fabric according to one embodiment ofthe present invention. The embodiment of FIG. 1A includes a fabric 10that interconnects server nodes 20 to sets of dual-port data storagedevices 30. The fabric 10 may be implemented in a variety of ways, suchas traces on a printed circuit board, and a plurality of electricalwires (e.g., cables such as ribbon cables, mini-SAS HD cables, OCuLinkcables, etc.), and combinations thereof. The fabric 10 includescross-connections 12 between switches 40. In addition to providingbandwidth balancing in the case of node failure, the cross-connections12 can also be used in endpoint reassignment and bandwidth balancing tocounter unbalanced node CPU usage and input/output (I/O) loads, as wellas to provide peer-to-peer communication between the sets of datastorage devices 30 (e.g., direct memory access transfers between thefirst set of data storage devices 30A and third set of data storagedevices 30C, without significant involvement from a server node 20).

Each set of dual-port data storage devices includes one or moredual-port data storage devices 32, where each dual-port data storagedevice is connected to two different switches via resource links 16. Asused herein, the term “switch” refers to an electrical component thatprovides a plurality of communication paths for devices connected to theswitch to communicate, where the switch routes traffic between thedevices and establishes connections between communicating devicesconnected to the switch.

As shown in FIG. 1A, each server node 20 includes one or more hostprocessors 24 (e.g., Intel® Xeon® processors) connected to a networkinterface card (NIC) 26 (e.g., an Ethernet NIC) over a PCIe connectionand also connected to a corresponding switch 40 over a host link 14(e.g., another PCIe connection or plurality of PCIe connections). Eachserver node 20 is paired with another server node 20, which may bereferred to as its high availability (HA) peer. For example, servernodes 20A and 20B are HA peers and form the pair 22AB. Together, pairsof mutual HA peers 22 provide two redundant paths through the fabric 10to access one or more sets of data storage devices 30 (e.g., HA pair22AB provide access to sets of data storage devices 30A and 30B). Otherpairs of HA peer nodes 22 provide redundant paths to other sets of datastorage devices 30 (e.g., HA pair 22CD provide access to sets of datastorage devices 30C and 30D).

The fabric 10 also interconnects the multiple pairs of HA peers 22 toprovide connectivity for balanced bandwidth across all nodes and thedata storage devices 32 in the event of a single server node failure. Ina system with N server nodes 20 (or N switches 40), the amount ofadditional cross-connect bandwidth from one switch 40 to each of theother N−2 switches 40 is 1/(N−1) of the bandwidth supported by eachserver node 20 in a normal, non-failure mode of operation (the “normalbandwidth”). As a result, the loss of bandwidth due to the failure ofone node can be mitigated by the remaining N−1 nodes.

In more detail, FIG. 1A shows the case of four server nodes 20 (N=4).For the sake of convenience, FIG. 1A depicts bandwidth in units of B,where B is defined to be the bandwidth requirements of one of the datastorage devices 32. In FIG. 1A, each set of data storage devices 30includes six data storage devices 32. Therefore, each set of datastorage devices 30 requires 6B of bandwidth (1B for each data storagedevice 32). As such, in the embodiment shown in FIG. 1A, the four servernodes 20 provide a total of 24B of throughput (6B per node) to thetwenty-four data storage devices 32 in the system.

(Note that the actual bandwidth capacity of each connection between theserver node 20 and its corresponding switch 40 is 8B and thereforeexceeds the 6B bandwidth capacity required by each set of data storagedevices 30 by 2B. In addition, in the embodiment of FIG. 1A, theconnection between the host processor 24 and the network interface 26has a bandwidth at least equal to the bandwidth between the hostprocessor 24 and the switch 40, e.g., 8B.)

As such, in the embodiment shown in FIG. 1A, the cross-connect bandwidthfrom each node to each of the non-HA peer nodes is 6B/3=2B. For example,the cross-connect bandwidths of each cross-connection 12AC and 12ADbetween the first switch 40A corresponding to the first server node 42Aand the switches 40C and 40D of its non-HA peer nodes 20C and 20D are28. Likewise, the cross-connect bandwidths of each cross-connection 12BCand 12BD between the second switch 40B corresponding to the second node20B and the switches 40C and 40D of its non-HA peer nodes 20C and 20Dare also 2B. As shown in FIG. 1A, the cross-connections 12 are madebetween the switches 40. However, embodiments of the present inventionare not limited thereto and, as discussed above, the minimum bandwidthof each of the cross-connections 12 can be set at the bandwidthsupported by each server node 20 in a normal, non-failure mode ofoperation divided by number of servers N minus 1. In still otherembodiments, wherein the system is designed to tolerate the failure ofmultiple server nodes 20, then the minimum bandwidth of each of thecross-connections 12 can be set at the bandwidth supported by eachserver node 20 in a normal, non-failure mode of operation divided bynumber of servers N minus the number of failures to be tolerated.

FIG. 1B is a block diagram illustrating a data storage system 10including an adaptive multipath fabric according to one embodiment ofthe present invention in which B=×4 (e.g., the bandwidth of a 4 lanePCIe link). In the case of PCIe 3.0, a ×4 link provides a maximumbandwidth or throughput of about 4 GB/s. Like components are labeledwith like reference numerals in FIG. 1A, and therefore descriptions ofthese components are not repeated herein.

In the example shown in FIG. 1B, four server nodes 20, with 64 PCIe 3.0lanes per node, are connected to twenty four dual-port NVMe SSDsarranged into four sets of six drives each. Each of the twenty fourdual-port NVMe SSDs has two endpoints (two “SSD endpoints”), where eachendpoint can be assigned to any one of the server nodes. For example,each of the end points of the SSDs in the first set of data storagedevices 30A may be assigned to the first server node 20A. Using PCIe3.0, the system shown in FIG. 1B can deliver an end-to-end systemperformance profile of 96 GB/s user data throughput (96 lanes of PCIe3.0 bandwidth) and high availability (full performance access to all ofthe SSDs is maintained in the event of a single serve node failure).

In the example embodiment of FIG. 1B, when operating at full load, eachof the NVMe SSDs 32 transfers data at about 4 GB/s and therefore can beserved by a single ×4 link. In addition, each of the two ports in thedual-port NVMe SSDs provides a ×4 link. As a result, failure of eitherof the two ports of an NVMe SSD still allows the data storage device tooperate at full performance. Because each of the NVMe SSDs requires fourPCIe lanes of bandwidth, each set of six dual-port NVMe SSDs requires6×4=×24 or 24 lanes of bandwidth to maintain full performance of theentire set of data storage devices 30.

As shown in FIG. 1B, the sets of data storage devices 30 are connectedto PCIe switches 40. Each switch 40 is also connected to a correspondinghost server node 20 over a PCIe connection. In the embodiment shown inFIG. 1B, there is a ×32 link between the PCIe switch and the hostprocessor 24 of the server node 20.

In the configuration shown in FIG. 1B, server nodes 20A and 20B areHA-peer nodes, providing dual-port access to twelve SSDs 00-11 (the twosets of SSDs 30A and 30B). Similarly, server nodes 20C and 20D areHA-peer nodes, providing dual-port access to another twelve SSDs 12-23(the two sets of SSDs 30C and 30D).

The PCIe fabric 10 shown in FIG. 1B also includes host links 14 whichinterconnect a total of one hundred twenty eight PCIe 3.0 lanes from thefour server nodes 20 (32 lanes from each node) to the switches 40 inaddition to resource connections 16 between the switches 40 and theresources (the data storage devices 32). Each of the host links 14 mayinclude a plurality of connections. For example, in the case of adual-processor server node, the 32 lanes from each server node mayinclude 16 lanes connected to a first CPU socket of the server node and16 lanes connected to a second CPU socket of the server node. Inaddition, each of the server nodes 20 may include multiple host links 14to connect the server node to multiple switches 40. As shown in theembodiment of FIG. 1B, the resource connections 16 include a total ofone hundred ninety two lanes across twenty four dual-port NVMe SSDswhere each SSD has a throughput capability of ×4 lanes of bandwidth (−4GB/s). As such, each SSD has twice as much port connectivity (2×4 lanesper SSD) versus its throughput capability (×4 lanes per SSD). In orderto achieve the full throughput of ×4 lanes per SSD for total ninety sixlanes across the twenty four drives, each server node 20 provides ×24lanes of bandwidth out of its ×32 lanes of throughput capability.

In some circumstances, each port of the dual-port NVMe SSDs has abandwidth lower than the full throughput capability of SSD. For example,some dual-port NVMe SSDs have only two ×2 ports, meaning that each portsupports only ×2 lanes. As a result, assuming that the maximumthroughput of the SSD is ×4 lanes, if one of the ports fails or theswitch connected to one of the ports fails, then the SSD only has ×2lanes worth of connectivity (i.e., half of its throughput capability).

In order to support sustainable bandwidth of 96 GB/s in the event of asingle server node failure, the cross-connections 12 of the fabric 10provide 24 GB/s/(N−1)=8 GB/s of cross-connect bandwidth between each ofnodes 20A and 20C, nodes 20A and 20D, nodes 20B and 20C, and nodes 20Band 20D.

The minimum number of lanes provided by the PCIe switch 40 depends onthe requirements of the connected components, namely, the two sets ofdata storage devices 30 (e.g., the first PCIe switch 40A is connected toa first set of data storage devices 30A and a second set of data storagedevices 30B), the host processor 24, and the cross-connections 12 of thefabric 10. In the example shown in FIG. 1B, each of the sets of datastorage devices 30 requires 24 lanes, the host processor 24 requires 32lanes, and each of the two cross-connections 12 to the fabric 10requires 8 lanes, for a total of 24+24+32+8+8=96 lanes. As such, in theembodiment shown in FIG. 1B, each PCIe switch 40 is a ×96 switch or a 96lane switch. However, embodiments of the present invention are notlimited thereto and the switch may have more lanes than the numberrequired to meet the needs of the connected components (in thisparticular example, the PCIe switch may have more than 96 lanes).

Rebalancing Bandwidth under Node Failure

FIG. 2A is a block diagram illustrating the failure of a switch and therebalancing of data transfer traffic according to one embodiment of thepresent invention. In the event of the failure of a switch 40, theserver node 20 associated with the switch 40 will also be disconnectedfrom the rest of the system because there are no redundant connectionsbetween the server nodes and the switches. Therefore, in someembodiments of the present invention, the failure of a switch 40 alsosubstantially results in the loss of its associated server node.However, embodiments of the present invention are not limited theretoand, in some embodiments, a server node may be connected to multipleswitches.

In the example of FIG. 2A, the server node 20B connected to the failedswitch 40B becomes disconnected from the data storage system 10 andtherefore the workload or data traffic handled by that switch 40B andthat server node 20B is distributed among the remaining N−1 switches40A, 40C, and 40D and N−1 server nodes 20A, 20C, and 20D. Data transfersto and from the sets of data storage devices 30 coupled to the failedswitch or node 20B pass through the redundantly connected switch 40A.This rebalancing of workload maintains throughput to all twenty fourSSDs in the system (a ×4 link per SSD).

The performance of data transfers to and from the sets of drivesconnected to the failed switch is maintained because of the excesscapacity built into the system. In particular, part of the bandwidthcomes from the server node that is directly connected to the survivingmember of the HA pair, and the remaining part of bandwidth is providedby the other server nodes (e.g., 20A, 20C, and 20D) connected throughthe fabric 10. In addition, the remaining N-1 server nodes (e.g., 20A,20C, and 20D) have sufficient bandwidth in their connections with theirrespective switches (e.g., 40A, 40C, and 40D) to accommodate theadditional load.

In some embodiments of the present invention, the switches 40 in theadaptive multipath fabric 10 are programmed to automatically detect sucha node failure, and, in turn automatically reassign SSD endpoints toserver nodes 20 and to rebalance bandwidth across surviving servernodes. In other words, the switches 40 may maintain information abouthow to reach each SSD based on the current configuration of theswitches, monitor the connections between the server nodes 20, the setsof data storage devices 30, and the other switches 40 at the physicaland link layers for error conditions and report those errors to amanagement system (e.g., one of the server nodes 20 or another dedicatedmanagement processor). The management system can determine whether alink or a server node has failed based on the reported errors and canreconfigure the switches 40 to reassign the SSD endpoints of the SSDs toreachable ones of the server nodes 20. Although there is no degradationin bandwidth with the single node failure shown in FIG. 2A, the crossconnections 12 between nodes traverse one extra level of PCIe switches,and therefore experience additional latency. However, the latencythrough a PCIe switch is generally small and insignificant compared tothe overall latency of data access to/from the SSDs.

FIG. 2B is a block diagram illustrating the failure of a server node andthe rebalancing of data transfers according to one embodiment of thepresent invention. Referring to FIG. 2B, in the event that a server node20B fails, but its corresponding switch 40B survives, data can still berouted through the functioning switch 40B, but is only accessiblethrough the three surviving server nodes 20A, 20C, and 20D. In thisevent, the management system (e.g., one of the server nodes 20 oranother dedicated management processor) in the adaptive multipath fabriccan be programmed to automatically detect the failure of the server node20B and, as in the embodiment of FIG. 2A, automatically reassign SSDendpoints to the surviving endpoints. In other embodiments of thepresent invention, the detection of errors and the automaticreconfiguration of the switches 40 is implemented in the switchesthemselves (e.g., by processing units integrated into the switches 40).

In some embodiments of the present invention, an individual switch maynot provide sufficient bandwidth to allow two sets of data storagedevices 30 to operate at full performance. For example, if switch 40Bfails, then the only routes to sets of data storage devices 30A and 30Bare through surviving switch 40A. If the surviving switch 40A has fewerthan ×96 lanes, then sets of data storage devices 30A and 30B will nothave enough bandwidth to operate at full speed. However, if the switch40B does not fail and only the associated server node 20B fails, thenthe switch 40B can participate in rerouting the data to the survivingserver nodes 20A, 20C, and 20D. In some such embodiments, there issufficient bandwidth to continue to operate all of the sets of datastorage devices 30 at full performance.

Inter-Node Communication

In some embodiments of the present invention, a secondary fabric 50 canbe included for communication between the server nodes 20. FIG. 3 is ablock diagram of a system which further includes a secondary fabric 50connecting the server nodes 20 according to one embodiment of thepresent invention. The secondary fabric includes inter-connections 52(e.g., 52AB, 52AC, 52AD, 52BC, and 52BD) that connect secondary switches54 (e.g. 54A, 54B, 54C, and 54D) to one another, where each secondaryswitch 54 is directly connected to one corresponding server node 20(e.g., secondary switch 54A is directly connected to server node 20A).Like fabric 10, the secondary fabric 50 may be implemented in a varietyof ways, such as traces on a printed circuit board, a plurality ofelectrical wires (e.g., cables such as ribbon cables, mini-SAS HDcables, OCuLink cables, etc.), and combinations thereof. According toone embodiment of the present invention, the secondary fabric 50 isconnected to the server node CPU non-transparent bridge (NTB) ports. Thesecondary fabric 50 provides a low-latency internal communicationbetween the server nodes 20 which can be used, for example, tosynchronize metadata between the server nodes 20.

Incrementally Expanding the Fabric

While FIGS. 1A, 1B, 2, and 3 illustrate systems of two pairs 22 ofserver nodes 20 providing high availability and high performance accessto four sets of data storage devices, embodiments of the presentinvention are not limited thereto.

Embodiments of the present invention include configurations of datastorage devices, switches, and server nodes in accordance with theworkload requirements of a particular application.

FIG. 4A is a block diagram illustrating a small high availabilityconfiguration including two server nodes 20A and 20B and one set of datastorage devices 30A according to one embodiment of the presentinvention. The configuration of FIG. 4A may be useful in circumstanceswhere data storage capacity of a single set of data storage devices issufficient for the current workload, and where high availability throughredundant server nodes is desirable.

Referring to FIG. 4A, the single set of data storage devices 30A isconnected to both the first switch 40A and the second switch 40B. Likein the embodiment of FIG. 1A, the first switch 40A is connected to afirst server node 20A, and the second switch 40B is connected to asecond server node 20B. In the event of failure of either the firstserver node 20A or the second server node 20B, the set of data storagedevices 30A remains accessible via the surviving node.

When data storage demands increase, additional sets of data storagedevices can be added to the system shown in FIG. 4A. For example, whenone additional set of data storage devices can be added by connectingthe added data storage devices to both the first switch 40A and thesecond switch 40B to arrive at a configuration substantially similar tothe first server node 20A, the second server node 20B, the first switch40A, the second switch 40B, the first set of data storage devices 30Aand the second set of data storage devices 30B, but without theinter-connections to other switches. As before, if either of the servernodes 20A and 20B or either of the switches 40A and 40B fails, both thefirst and second sets of data storage devices 30A and 30B remainaccessible.

FIG. 4B illustrates the expansion of the configuration shown in FIG. 4Ato include additional sets of data storage devices according to oneembodiment of the present invention. As shown in FIG. 4B, the second setof data storage devices are coupled to the first switch and the secondswitch. The configuration of FIG. 4B further includes additionalinterconnects in the form of a third switch 40C and a fourth switch 40Din place of additional server nodes. The third set of data storagedevices 30C is coupled to the third and fourth switches 40C and 40D, andthe fourth set of data storage devices 30D is also coupled to the thirdand fourth switches 40C and 40D. Cross-connections 12AC and 12BC connectthe third switch 40C to the first and second switches 40A and 40B andcross-connections 12AD and 12BD connect the fourth switch 40D to thefirst and second switches 40A and 40B. As a result, the first and secondserver nodes 20A and 20B can access the third and fourth sets of datastorage devices 30C and 30D via the third and fourth switches 40C and40D.

In the configuration shown in FIG. 4B, all of the data storage devicesremain accessible in the failure of either one of the server nodes 20Aand 20B or in the event of failure of any of the four switches 40A, 40B,40C, and 40D. However, the data throughput performance of the third andfourth sets of data storage devices 30C and 30D is limited by thebandwidth of the cross-connections 12, and also limited by the host link14 between the server nodes 20 and their corresponding switches 40. Inparticular, in the arrangement of FIG. 4B, the two server nodes 20provide a total of 16B of bandwidth (8B from each server node 20) acrossall four sets of data storage devices 30, which means 4B per set of datastorage devices, which corresponds to the maximum bandwidth available tothe sets of data storage devices 30C and 30D that are connected only viathe cross-connections 12AC, 12AD, 12BC, and 12BD (in other words, 2B percross-connection and four cross connections gives a total of 8B sharedacross the two sets of drives, for 4B for each set of drives). Inaddition, the failure of any of the server nodes or any of the switcheswill also further impact the data throughput of the system. As such, theconfiguration shown in FIG. 4B is better suited, for example, tocircumstances where having sufficient bandwidth is less important thantotal storage capacity.

If additional bandwidth is required, the configuration of FIG. 4B can befurther expanded to connect server nodes to the third and fourthswitches 40C and 40D, which results in substantially the sameconfiguration as seen in FIG. 1B. As such, embodiments of the presentinvention allow for incremental expansion of the system as needed toserve the growing needs of its users.

In still other embodiments of the present invention, the workloadsdemanded by users may be more compute-intensive than data-intensive.FIG. 4C illustrates the expansion of the configuration shown in FIG. 4Ato include additional server nodes according to one embodiment of thepresent invention.

Starting with the base configuration of two server nodes and one set ofsix data storage devices 30A as shown in FIG. 4A, a third server node20C can be added together with a third switch 40C, which is connected tothe first and second switches 40A and 40B via cross-connections 12AC and12BC. Alternatively, the third server node 20C can be connected to thefirst and second switches 40A and 40B through a passive interconnectboard instead of an additional switch (e.g., effectively directconnections between the server node 20C and the switches 40A and 40B).This can increase the computational capacity of the system whileretaining access to the same set of data storage devices. Ifcomputational demands further increase, a fourth node 20D can beconnected to the first and second switches 40A and 40B, either through afourth switch 40D or via a passive interconnect board.

The use case here could be if the software stack running on the twoserver nodes 20A and 20B is a bottleneck impacting the ability toachieve full bandwidth to the data storage devices 32, in which caseadding more server nodes provides more server compute power. Ifadditional storage is required, then additional sets of data storagedevices can also be incrementally added, in a manner similar to thatshown above with respect to FIG. 4B, to reach, for example, theconfiguration of four server nodes and plus twenty four data storagedevices, as shown in FIG. 1B.

For the sake of convenience, aspects embodiments of the presentinvention were described above in the context of configurations havingup to four switches. However embodiments of the present invention arenot limited thereto. For example, some embodiments of the presentinvention can include more than four switches.

Using a similar approach, variants of data storage systems 10 includingadaptive multipath fabrics according to embodiments of the presentinvention may include, for example, six server nodes connected to thirtysix data storage devices via six switches for a total throughput of 144GB/s. As another example, FIG. 5 is a block diagram illustrating asystem having eight server nodes (20A, 20B, 20C, 20D, 20E, 20F, 20G, and20H) connected to forty eight data storage devices via eight switches(40A, 40B, 40C, 40D, 40E, 40F, 40G, and 40H) for a total throughput of192 GB/s (based on the above assumptions regarding each data storagedevice having about 4 GB/s throughput) according to one embodiment ofthe present invention.

As such, the adaptive multipath fabric architecture according toembodiments of the present invention can deliver a balanced andconfigurable end-to-end system performance profile using a group ofserver nodes and a group of high-performance multi-port NVMe SSDs. Theperformance is balanced across server nodes and end points, andperformance can be sustained and balanced under single node failures.

The data storage system may provide, for example, a storage area network(SAN) over an Ethernet connection and the multipath fabric can delivernetwork storage performance over Ethernet matching the performancebetween the underlying drives to the server nodes.

For example, a system performance profile can be a combination of one ormore of: 100 GB/s user data throughput; low latency internalcommunication between server nodes; high availability access to the dataon the end points.

Embodiments of the present invention can provide an adaptive multipathfabric architecture that: interconnects a group of server nodes (PCIeroot-complexes) with a group of multi-port SSDs (PCIe endpoints); offersflexibility in terms of number of server nodes, number of SSDs, andend-to-end performance specification; supports end-to-end load balancingacross server nodes and SSDs; provides redundant access from a pair ofserver nodes (HA-peers) to a set of SSDs via the multi-ports of theSSDs; provides cross connect bandwidth between multiple pairs of HA-peernodes to allow for rebalancing of bandwidth across all server nodes infailure-recovery and load-balancing scenarios; can sustain a single nodefailure without any degradation of end-to-end system performance byrebalancing bandwidth across all surviving nodes; and has capability forautomatic failure detection, which in turn triggers reassignment of SSDendpoints to server nodes and rebalancing of bandwidth.

Aspects of embodiments of the present invention also enable: thecapability to interconnect a group of PCIe root-complexes (such asserver nodes) with a group of multi-port PCIe endpoints (such asdual-port NVMe SSDs) in a flexible and expandable manner; the capabilityto continue to access all PCIe endpoints in the event of a singleroot-complex failure (HA) while limiting performance degradation; thecapability to balance the allocation of bandwidth between root-complexesand endpoints; the capability to dynamically reassign PCIe endpoints toroot-complexes in failure-recovery or load-balancing scenarios; thecapability to enable peer-to-peer data transfers between endpointswithout any overhead on the host root-complexes; and the capability toenable low-latency high-throughput communication between HA peer servernodes

While the present invention has been described in connection withcertain exemplary embodiments, it is to be understood that the inventionis not limited to the disclosed embodiments, but, on the contrary, isintended to cover various modifications and equivalent arrangementsincluded within the spirit and scope of the appended claims, andequivalents thereof.

For example, although embodiments of the present invention are describedabove with respect to the computing resources as solid state driveshaving dual PCIe ports connecting to server nodes via PCIe switches,embodiments of the present invention are not limited thereto. Forexample, in some embodiments of the present invention, the solid statedrives may have more than two ports, but instead can also encompass theuse of SSDs having various numbers of endpoint ports, e.g., greater thanor equal to two. In addition, in some embodiments of the presentinvention, the server nodes may be connected to the fabric throughmultiple ports. For example, each server node may be connected to morethan one switch through multiple host links, thereby providing redundantconnections between the server nodes and the computing resources in theevent that a host link or a switch fails. Depending on the bandwidth ofthe host links and the switches, these redundant connections may alsoallow the server nodes to operate at full bandwidth, even under failureconditions.

According to some embodiments, the solid state drives may use adifferent interface such as Ethernet, Infiniband® (IB), Fibre Channel(FC), serially attached SCSI (SAS), and the like. For example, in thecase of an Ethernet interface, the PCIe switch may be replaced with anetwork (Ethernet) switch.

According to some embodiments, the resources connected using theadaptive multipath fabric are other types of computing resources such ashard disk drives, tape drives, volatile memory such as dynamic randomaccess memory (DRAM), and computing units such as vector processors,graphical processing units (GPUs), digital signal processors (DSPs), andfield programmable gate arrays (FPGAs).

In still other embodiments of the present invention, each individualcomputing resource need not have multiple ports. For example, each setof computing resources may include an adapter or switch that provideslinks to each of the individual computing resources and links to the twoconnected switches 40. As a more specific example, each of the datastorage devices 32 may be a single port data storage device, where eachdata storage device 32 is connected to an adapter associated with theset of data storage devices 30. The adapter, in turn, may also beconnected to two switches 40. In this way, the set of data storagedevices 30 is still connected to multiple switches 40, even though eachof the individual data storage devices is a single-port device. Thistechnique may also be applied to other types of computing resources, asdescribed above.

While, for the sake of convenience, the relative bandwidths of theinterfaces were the same in the illustrated embodiments (e.g., 6B foreach set of data storage devices, 8B for the connection between eachserver node and a corresponding switch, and 2B for each cross connectionbetween switches), embodiments of the present invention are not limitedthereto, and embodiments of the present invention also includeembodiments having interfaces that provide different amounts ofbandwidth (e.g., a bandwidth that corresponds to the throughput of thecomputing resources associated with the interface). In some embodimentsof the present invention designed to maintain full performance to theresources connected to the adaptive multipath fabric in the event of thefailure of a single server node, the total bandwidth of thecross-connections (or the “cross-connect bandwidth”) is sufficient to atleast equal the bandwidth that would normally be supplied by that singlenode. Although some of the embodiments of the present invention areillustrated herein depict all of the cross-connections as having thesame bandwidth and as being connected to every switch outside of the HApair, embodiments of the present invention are not limited thereto. Forexample, in some embodiments, the cross-connections have differentbandwidths, and in some embodiments, the cross-connections are made toless than all of the other switches.

While, for the sake of convenience, embodiments having up to eight hostswere illustrated, embodiments of the present invention are not limitedthereto and similar concepts can be implemented with varying numbers ofhosts.

Similarly, embodiments of the present invention are not limited to setsof exactly six data storage devices, but also include embodiments havingvarious numbers of SSDs in each set (e.g., the same number in each setor various numbers in each set).

Some aspects of embodiments of the present invention use the fabricfailure detection and reconfiguration capabilities to communicate withstorage management tools to improve storage infrastructure management.

What is claimed is:
 1. A computing system providing high-availabilityaccess to computing resources comprising: a plurality of interfaces; aplurality of sets of computing resources, each of the sets of computingresources comprising a plurality of computing resources; and at leastthree switches, each of the switches being connected to a correspondingone of the interfaces via a host link and being connected to acorresponding one of the sets of computing resources via a plurality ofresource connections, each of the switches being configured such thatdata traffic is distributed to remaining ones of the switches through aplurality of cross-connections between the switches if one of theswitches fails.
 2. The computing system of claim 1, wherein the at leastthree switches comprises: a first switch; a second switch; and a thirdswitch directly connected to the first switch via a firstcross-connection and directly connected to the second switch via asecond cross-connection.
 3. The computing system of claim 2, furthercomprising: a first server node coupled to the first switch via a firsthost link, the first server node comprising a first interface of theplurality of interfaces; and a second server node coupled to the secondswitch via a second host link, the second server node comprising asecond interface of the plurality of interfaces.
 4. The computing systemof claim 3, further comprising a third server node coupled to the thirdswitch via a third host link.
 5. The computing system of claim 4,further comprising: a first secondary switch directly connected to thefirst server node; a second secondary switch directly connected to thesecond server node; a third secondary switch directly connected to thethird server node; a first cross-connection directly connecting thefirst secondary switch to the second secondary switch; a secondcross-connection directly connecting the first secondary switch to thethird secondary switch; and a third cross-connection directly connectingthe second secondary switch to the third secondary switch.
 6. Thecomputing system of claim 3, wherein a first set of computing resourcesof the plurality of sets of computing resources comprises a first set ofdata storage devices, each of the first set of data storage deviceshaving a first port directly connected to the first switch via a firstresource connection of the plurality of resource connections and asecond port directly connected to the second switch via a secondresource connection of the plurality of resource connections, andwherein a second set of computing resources of the plurality of sets ofcomputing resources comprises a second set of data storage devices, eachof the second set of data storage devices having a first port directlyconnected to the first switch via a third resource connection of theplurality of resource connections and a second port directly connectedto the second switch via a fourth resource connection of the pluralityof resource connections.
 7. The computing system of claim 6, furthercomprising a fourth switch directly connected to the first switch via athird cross-connection and directly connected to the second switch via afourth cross-connection.
 8. The computing system of claim 7, furthercomprising a third set of data storage devices, each of the third set ofdata storage devices having a first port directly connected to the thirdswitch via a fifth resource connection and a second port directlyconnected to the fourth switch via a sixth resource connection.
 9. Thecomputing system of claim 8, further comprising a fourth server nodedirectly connected to the fourth switch via a fourth host link.
 10. Thecomputing system of claim 9, further comprising a fourth set of datastorage devices, each of the fourth set of data storage devices having afirst port directly connected to the third switch via a seventh resourceconnection and a second port directly connected to the fourth switch viaan eighth resource connection.
 11. The computing system of claim 6,wherein each switch is configured to: detect a failure of anotherswitch; and provide access to the first set of data storage devices andthe second set of data storage devices via the host link and thecross-connection corresponding to the switch.
 12. The computing systemof claim 1, wherein the computing system comprises N interfaces, where Nis an integer, wherein a bandwidth unit B is an amount of bandwidthrequired for one of the computing resources of the sets of computingresources to operate at full bandwidth, where B is a positive number,wherein each resource connection has a bandwidth of at least 1×B,wherein each set of computing resources has up to K computing resources,where K is an integer, wherein each host link of each of the pluralityof interfaces supports a normal traffic bandwidth of K×B and a maximumtraffic bandwidth greater than or equal to K×B, and wherein eachcross-connection of the plurality of cross-connections has a bandwidthof at least K×B/(N−1).
 13. The computing system of claim 1, wherein theswitches are Peripheral Component Interconnect Express (PCIe) switches,and wherein the host links and the resource connections are PCIe buslinks.
 14. A computing system comprising at least two high-availabilitypairs, each high availability pair comprising: a first switch; a secondswitch; a first interface coupled to the first switch via a first hostlink; a interface coupled to the second switch via a second host link; afirst set of computing resources connected to the first switch via afirst resource connection and connected to the second switch via asecond resource connection; a second set of computing resourcesconnected to the first switch via a third resource connection andconnected to the second switch via a fourth resource connection; aplurality of first cross-connections, each of the firstcross-connections directly connecting the first switch to each switch ofeach of the other high-availability pairs; and a plurality of secondcross-connections, each of the second cross-connections directlyconnecting the second switch to each switch of each of the otherhigh-availability pairs.
 15. The computing system of claim 14, whereinthe first set of computing resources comprises a first set of datastorage devices, each of the first set of data storage devices having afirst port directly connected to the first switch via a first resourceconnection and a second port directly connected to the second switch viaa second resource connection, and wherein the second set of computingresources comprises a second set of data storage devices, each of thesecond set of data storage devices having a first port directlyconnected to the first switch via a third resource connection and asecond port directly connected to the second switch via a fourthresource connection.
 16. The computing system of claim 15, wherein thefirst switch is configured to: detect a failure of the second switch;and provide access to the first set of data storage devices and thesecond set of data storage devices via the first host link and the firstcross-connection.
 17. The computing system of claim 14, wherein thecomputing system comprises N server nodes, where N is an integer,wherein a bandwidth unit B is an amount of bandwidth required for one ofthe computing resources to operate at full bandwidth, where B is apositive number, wherein each resource connection has a bandwidth of atleast 1×B; wherein each set of computing resources has up to K computingresources, where K is an integer, wherein each server node supports anormal bandwidth of K×B and supports a maximum bandwidth greater than orequal to K×B, and wherein each cross-connection has a bandwidth of atleast K×B/(N−1).
 18. The computing system of claim 14, wherein theswitches are Peripheral Component Interconnect Express (PCIe) switches,and wherein the host links and the resource connections are PCIe buslinks.
 19. The computing system of claim 14, wherein the at least twohigh-availability pairs comprise: a first high-availability pair; asecond high-availability pair; a third high-availability pair; and afourth high-availability pair.
 20. A redundant resource connectionfabric comprising: a first switch; a second switch; a third switchdirectly connected to the first switch via a first cross-connection anddirectly connected to the second switch via a second cross-connection; afirst set of computing resources, each of the first set of computingresources having a first port directly connected to the first switch viaa first resource connection and a second port directly connected to thesecond switch via a second resource connection; and a second set ofcomputing resources, each of the second set of computing resourceshaving a first port directly connected to the first switch via a thirdresource connection and a second port directly connected to the secondswitch via a fourth resource connection.
 21. The redundant resourceconnection fabric of claim 20, wherein the first switch is configuredto: detect a failure of the second switch; and provide access to thefirst set of computing resources and the second set of computingresources via the first cross-connection.
 22. The redundant resourceconnection fabric of claim 20, further comprising a fourth switchdirectly connected to the first switch via a third cross-connection anddirectly connected to the second switch via a fourth cross-connection.23. The redundant resource connection fabric of claim 22, furthercomprising a third set of computing resources directly connected to thethird switch via a first resource connection and directly connected tothe fourth switch via a second resource connection.
 24. The redundantresource connection fabric of claim 23, further comprising a fourth setof computing resources directly connected to the third switch via athird resource connection and directly connected to the fourth switchvia a fourth resource connection.